home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / DEMO_VGA / UTILEGA1.LZH / DEMO.C < prev    next >
Text File  |  1986-02-25  |  11KB  |  406 lines

  1. /*                                                                            */
  2. /*  Program:     Demo, Version 01/20/86                                       */
  3. /*                                                                            */
  4. /*  Description: Demonstrate some of the EGA graphic routines.                */
  5. /*                                                                            */
  6. /*  Author:      Kent Cedola                                                  */
  7. /*               2015 Meadow Lake Court, Norfolk VA, 23518. 1-(804)-857-0613  */
  8. /*                                                                            */
  9. /*  Language:    Microsoft C 3.0+                                             */
  10. /*                                                                            */
  11. /*  Comments:    This program only includes the graphic routines needed to    */
  12. /*               save space and time for BBS's.  If you would like a complete */
  13. /*               set of EGA graphic routines (FREE), please let me know.      */
  14. /*                                                                            */
  15.  
  16. #include <mcega.h>
  17.  
  18.   int  x,y,Ch;
  19.  
  20.   char buff[16],Shade[16];
  21.  
  22. void InitGraphics()
  23. {
  24.  
  25.   GPPARMS();                           /* Sets up all global variables */
  26.  
  27.   if (GDTYPE == 4)                     /* Give monochrome user bad news */
  28.     {
  29.     perror("Sorry, must have a Color Display not monochrome!\n");
  30.     exit(1);
  31.     }
  32.   else if (GDTYPE != 5)                 /* Tell non-EGA users no can run */
  33.     {
  34.     perror("Enhanced Color Adapter and Display not found!");
  35.     exit(2);
  36.     };
  37.  
  38.   if (GDMEMORY == 64)                   /* We need lots of EGA memory   */
  39.     {
  40.     perror("This program will work much better with 128k+ EGA memory!\n");
  41.     perror("       Hit any key to continue!\n");
  42.     getch();
  43.     };
  44.  
  45.   GPINIT();                            /* We are now in graphic mode!  */
  46.  
  47.   buff[0] = 4;
  48.   buff[1] = GREEN;
  49.   buff[2] = GREEN;
  50.   buff[3] = BLUE;
  51.   buff[4] = BLUE;
  52.  
  53.   GPSTYLE(buff);
  54.  
  55. }
  56.  
  57. void TermGraphics()
  58. {
  59.  
  60.   GPTERM();                            /* Terminate graphic mode       */
  61.  
  62. }
  63.  
  64. void TitlePage()
  65. {
  66.  
  67.   GPCOLOR(BLACK);
  68.   GPMOVE(0,0);
  69.   GPBOX(GDMAXCOL,GDMAXROW);
  70.  
  71.   GPColor(CYAN);
  72.   GotoXY( 2,1); gprintf("KC-TPDEMO Beta");
  73.   GotoXY(23,1); gprintf("Demonstration of Turbo Pascal & EGA");
  74.   GotoXY(67,1); gprintf("KC-Graphics");
  75.  
  76.   GPCOLOR(GREEN);
  77.   GPMOVE(0,0);
  78.   GPRECT(GDMAXCOL,GDMAXROW);
  79.   GPMOVE(4,3);
  80.   GPRECT(GDMAXCOL-4,38);
  81.   GPMOVE(4,41);
  82.   GPRECT(124,346);
  83.   GPMOVE(128,41);
  84.   GPRECT(635,346);
  85.  
  86. }
  87.  
  88. void MapPage()
  89. {
  90.   static int World[] =
  91.     {
  92.     168,2,16,3,16,3,15,4,14,6,14,6,12,8,12,9,10,10,10,12,9,15,9,17,10,
  93.     19,11,25,11,27,12,27,13,30,13,30,12,28,12,28,10,26,10,26,9,28,8,30,8,
  94.     30,9,32,10,32,9,33,9,33,12,31,12,32,13,35,13,35,11,37,9,39,9,36,12,
  95.     39,12,39,10,40,9,43,9,46,12,46,14,43,17,40,15,40,14,42,14,43,13,42,12,
  96.     40,12,40,13,38,14,38,16,34,16,30,19,30,20,33,22,34,22,34,25,37,21,
  97.     36,19,39,17,40,17,41,18,41,19,43,18,44,22,46,23,46,24,45,24,45,25,
  98.     45,26,46,26,46,28,43,27,43,26,45,25,42,25,39,25,40,27,40,30,37,30,
  99.     32,35,32,37,28,39,29,43,28,44,27,43,26,40,24,40,24,41,21,41,18,44,
  100.     18,46,17,47,19,49,21,48,21,46,24,46,22,51,25,51,25,55,28,55,28,56,
  101.     29,56,32,53,35,55,36,54,42,58,44,58,45,60,45,62,47,62,48,64,51,64,
  102.     54,66,54,68,52,71,52,76,48,80,48,83,45,87,45,88,42,91,42,94,43,95,
  103.     43,99,45,100,42,100,43,99,41,100,38,96,35,88,35,83,34,76,30,74,30,73,
  104.     26,66,26,62,28,57,27,56,24,56,22,53,21,53,21,52,19,52,19,51,16,51,
  105.     12,49,13,47,10,40,11,46,10,46,8,42,8,38,7,37,7,32,11,27,12,27,12,26,
  106.     11,24,12,19,9,17,7,18,6,18,6,19,4,19,2,20,2,16,
  107.     5,
  108.     31,8,34,7,35,8,32,9,31,8,
  109.     4,
  110.     34,9,36,9,34,11,34,9,
  111.     5,
  112.     36,7,38,7,38,8,36,8,36,7,
  113.     40,
  114.     42,7,46,4,44,4,43,6,41,6,41,5,44,4,48,2,50,2,51,3,50,4,54,3,58,3,61,1,
  115.     64,1,65,3,67,3,67,4,65,8,64,8,62,10,63,10,63,11,59,12,58,14,57,14,
  116.     53,19,51,18,49,14,51,12,51,11,52,11,52,8,48,8,47,7,50,4,48,4,45,8,
  117.     44,7,42,7,
  118.     6,
  119.     62,13,66,13,67,14,64,16,62,14,62,13,
  120.     7,
  121.     25,46,26,45,28,45,31,47,29,48,29,47,25,46,
  122.     5,
  123.     32,47,34,48,32,49,31,48,32,47,
  124.     5,
  125.     78,5,80,5,81,6,79,7,78,5,
  126.     4,
  127.     81,4,82,4,82,5,81,4,
  128.     4,
  129.     81,6,82,6,82,7,81,6,
  130.     8,
  131.     94,10,94,8,97,6,98,6,98,7,95,9,95,10,94,10,
  132.     9,
  133.     96,70,98,69,98,68,99,67,100,70,98,76,96,77,95,75,96,70,
  134.     5,
  135.     140,20,143,23,143,25,142,25,140,20,
  136.     5,
  137.     143,26,145,26,146,27,144,29,143,26,
  138.     9,
  139.     145,29,147,30,147,33,143,36,142,35,144,34,142,34,145,32,145,29,
  140.     5,
  141.     139,40,140,40,140,43,139,42,139,40,
  142.     7,
  143.     140,46,141,45,142,48,143,50,142,50,139,48,140,46,
  144.     4,
  145.     140,51,140,52,139,53,140,51,
  146.     4,
  147.     142,50,143,52,142,52,142,50,
  148.     10,
  149.     144,52,145,53,144,56,143,55,143,54,142,54,142,53,142,52,143,52,144,52,
  150.     9,
  151.     138,54,140,54,140,60,138,62,135,62,134,60,134,57,136,57,138,54,
  152.     8,
  153.     141,58,144,58,144,59,142,59,143,64,141,64,140,62,141,58,
  154.     5,
  155.     145,58,146,58,146,59,145,59,145,58,
  156.     15,
  157.     147,59,149,59,150,60,152,60,156,62,158,64,160,64,158,66,160,68,157,68,
  158.     155,66,152,67,151,64,148,62,147,59,
  159.     4,
  160.     143,66,140,66,140,67,141,67,
  161.     2,
  162.     143,67,144,66,
  163.     13,
  164.     160,86,162,86,163,90,160,93,159,92,154,96,152,96,152,95,158,91,
  165.     159,92,159,90,161,89,160,86,
  166.     26,
  167.     133,85,134,83,134,76,136,74,138,74,143,70,145,70,148,68,150,68,
  168.     150,70,152,72,153,68,154,68,156,76,158,78,152,88,146,89,148,90,
  169.     148,91,146,92,146,89,144,84,139,84,139,85,134,85,133,84,
  170.     10,
  171.     126,55,127,55,133,61,132,65,136,66,137,65,136,64,131,64,126,57,126,55,
  172.     9,
  173.     68,20,70,19,71,20,71,22,72,23,72,24,68,25,69,22,68,20,
  174.     5,
  175.     68,22,68,24,66,24,67,22,68,22,
  176.     178,
  177.     65,36,60,44,60,52,66,57,74,57,74,60,77,64,77,68,76,70,76,73,81,83,
  178.     86,83,91,76,91,73,94,70,94,66,93,64,93,62,100,54,100,51,96,52,
  179.     92,47,90,40,94,46,96,50,100,49,102,48,105,44,103,42,108,42,110,45,
  180.     112,45,113,52,115,55,116,55,117,52,117,55,118,55,118,53,117,52,
  181.     118,48,122,44,127,51,127,53,130,58,132,58,132,57,128,52,128,50,
  182.     132,54,134,52,134,50,132,46,132,44,136,44,138,42,139,36,136,34,
  183.     136,32,134,32,134,30,137,30,139,34,140,34,141,33,139,30,139,28,
  184.     141,28,141,28,136,18,136,16,141,16,141,14,143,14,143,18,147,21,
  185.     148,20,145,15,148,12,147,10,150,10,149,8,146,8,144,7,138,7,138,8,
  186.     134,8,134,7,126,7,126,8,122,8,122,7,115,7,114,5,110,5,110,4,108,4,
  187.     106,2,104,4,105,4,105,3,106,3,106,5,108,5,108,7,106,7,102,9,104,12,
  188.     102,12,100,8,99,8,99,10,100,12,94,12,92,13,91,11,90,11,90,14,88,15,
  189.     88,14,89,13,84,10,82,10,74,17,74,20,76,19,79,21,80,20,80,17,82,14,
  190.     84,16,82,18,83,20,80,22,76,22,76,20,75,20,75,22,70,26,69,26,70,28,
  191.     70,29,66,29,65,33,67,34,71,33,71,31,76,29,79,33,79,34,80,34,80,31,
  192.     76,28,79,28,83,34,83,32,86,31,86,28,88,28,89,29,90,27,92,27,91,28,
  193.     93,30,88,30,85,33,86,34,90,34,90,38,86,38,83,36,80,38,76,36,76,34,
  194.     71,34,70,35,67,35,65,36,
  195.     5,
  196.     96,28,98,27,100,34,98,34,96,28,
  197.     -34
  198.     };
  199.  
  200.   int  x,y,i,j;
  201.  
  202.   SetViewport(129,42,634,345);
  203.   SetWindow(-10,-11,180,129);
  204.  
  205.   GPCOLOR(BLACK);
  206.   GPMOVE(129,42);
  207.   GPBOX(634,345);
  208.  
  209.   GPCOLOR(GREEN);
  210.   i = 0;
  211.   while (World[i] > 0)
  212.     {
  213.     j = World[i] - 1;
  214.     MovAbs(World[i+1],World[i+2]);
  215.     i = i + 3;
  216.     while (j > 0)
  217.       {
  218.       LnAbs(World[i],World[i+1]);
  219.       j = j - 1;
  220.       i = i + 2;
  221.       }
  222.     };
  223.  
  224.   getch();
  225.  
  226.   Shade[0] = 2;
  227.   Shade[1] = 2;
  228.   Shade[2] = BLUE;
  229.   Shade[3] = GREEN;
  230.   Shade[4] = GREEN;
  231.   Shade[5] = BLUE;
  232.  
  233.   GPSHADE(Shade);
  234.   GPMOVE(131,44);
  235.   GPFLOOD(GREEN);
  236.  
  237.   GPCOLOR(BLUE);
  238.   GPMOVE(390,259);
  239.   GPRECT(510,341);
  240.  
  241.   SetViewport(390,259,510,341);
  242.   SetWindow(-10,-11,180,129);
  243.  
  244.   GPCOLOR(RED);
  245.   i = 0;
  246.   while (World[i] > 0)
  247.     {
  248.     j = World[i] - 1;
  249.     MovAbs(World[i+1],World[i+2]);
  250.     i = i + 3;
  251.     while (j > 0)
  252.       {
  253.       LnAbs(World[i],World[i+1]);
  254.       j = j - 1;
  255.       i = i + 2;
  256.       }
  257.     };
  258.  
  259.   SetViewport(0,0,GDMAXCOL,GDMAXROW);
  260.   SetWindow(0,0,GDMAXCOL,GDMAXROW);
  261. };
  262.  
  263. void BoxPage()
  264. {
  265.   int x1,y1,x2,y2;
  266.  
  267.   GPCOLOR(WHITE);
  268.   GPMOVE(129,42);
  269.   GPBOX(634,345);
  270.  
  271.   GPCOLOR(WHITE);
  272.   GotoXY(40,23); gprintf(" Hit any key to exit ");
  273.  
  274.   while (!kbhit())
  275.     {
  276.     x1 = random(GDMAXCOL - 130) + 130;
  277.     y1 = random(GDMAXROW - 43) + 43;
  278.     x2 = random(GDMAXCOL - 144) + 130;
  279.     y2 = random(GDMAXROW - 43) + 43;
  280.  
  281.     if (x1 < 130) x1 = 130;
  282.     if (y1 <  43) y1 = 43;
  283.     if (x2 > 633) x2 = 633;
  284.     if (y2 > 314) y2 = 314;
  285.  
  286.     if ((x1 < x2) && (y1 < y2))
  287.       {
  288.       if (x2 - x1 > 300) x2 = x1 + (x2 - x1) / 4;
  289.       if (y2 - y1 > 150) y2 = y1 + (y2 - y1) / 4;
  290.       GPCOLOR(BLACK);
  291.       GPMove(x1-1,y1-1);
  292.       GPRect(x2+1,y2+1);
  293.       GPColor(random(16));
  294.       GPMOVE(x1,y1);
  295.       GPBOX(x2,y2);
  296.       }
  297.     };
  298.  
  299.     getch();
  300.  
  301. }
  302.  
  303. void CirclePage()
  304. {
  305.   int  x,y,r,c;
  306.  
  307.   GPVIEWPORT(129,42,634,345);
  308.  
  309.   GPCOLOR(WHITE);
  310.   GPMOVE(129,42);
  311.   GPBOX(634,345);
  312.  
  313.   GPColor(WHITE);
  314.   GotoXY(40,23); gprintf(" Hit any key to Exit ");
  315.  
  316.   while (!kbhit())
  317.     {
  318.     x = random(GDMAXCOL - 129) + 129;
  319.     y = random(GDMAXROW - 42) + 42;
  320.     r = random(50);
  321.  
  322.     if (x < 130 ) x = 130;
  323.     if (x > 633 ) x = 633;
  324.     if (y < 43  ) y = 43;
  325.     if (y > 344 ) y = 344;
  326.  
  327.     GPCOLOR(Random(16));
  328.     GPMOVE(x,y);
  329.     GPCIR(r);
  330.     };
  331.  
  332.   getch();
  333. }
  334.  
  335. void BallPage()
  336. {
  337.   int  x,y,r,c;
  338.  
  339.   GPVIEWPORT(129,42,634,345);
  340.  
  341.   GPCOLOR(WHITE);
  342.   GPMOVE(129,42);
  343.   GPBOX(634,345);
  344.  
  345.   GPColor(WHITE);
  346.   GotoXY(40,23); gprintf(" Hit any key to Exit ");
  347.  
  348.   while (!kbhit())
  349.     {
  350.     x = random(GDMAXCOL - 129) + 129;
  351.     y = random(GDMAXROW - 42) + 42;
  352.     r = random(50);
  353.  
  354.     if (x < 130 ) x = 130;
  355.     if (x > 633 ) x = 633;
  356.     if (y < 43  ) y = 43;
  357.     if (y > 344 ) y = 344;
  358.  
  359.     GPCOLOR(Random(16));
  360.     GPMOVE(x,y);
  361.     GPBALL(r);
  362.     };
  363.  
  364.   getch();
  365. }
  366.  
  367. main()
  368. {
  369.  
  370.   int *sp;
  371.  
  372.   InitGraphics();
  373.  
  374.   TitlePage();
  375.   getch();
  376.  
  377.   MapPage();
  378.   getch();
  379.  
  380.   GPPAL(1,50);
  381.   getch();
  382.  
  383.   GPPAL(1,1);
  384.   getch();
  385.  
  386.   GPMove(300,100);
  387.   sp = (int *)open_popup(350,150);
  388.   getch();
  389.   close_popup(sp);
  390.   getch();
  391.  
  392.   BoxPage();
  393.  
  394.   CirclePage();
  395.  
  396.   BallPage();
  397.  
  398.   TermGraphics();
  399.  
  400. }
  401.  
  402. random(x)
  403. {
  404.   return ((int) (unsigned)rand() % x);
  405. }
  406.